package cn.liontalk.service;

import cn.liontalk.entity.OrderInfo;
import cn.liontalk.entity.User;
import cn.liontalk.vo.GoodsVO;

import java.awt.image.BufferedImage;

/**
 * @author: 周哲
 * @package: cn.liontalk.service
 * @description:
 * @date: 2019/1/20 19:05
 * @version: V1.0
 */
public interface SecKillService {

    /**
     * 查询用户是否参与了重复秒杀
     * @param goodId
     * @param uid
     * @return
     */
    OrderInfo queryGoodsKillInfoByGoodsIdAndUserId(long goodId,long uid);


    /**
     * 进行秒杀活动
     * @param user 秒杀用户
     * @param goodsVO 商品信息
     * @return 秒杀的订单信息
     */
    OrderInfo secKillGoods(User user, GoodsVO goodsVO);


    /**
     * 消息队列进行秒杀
     * @param user 秒杀用户信息
     * @param goodsVO 秒杀商品信息
     */
    void mqSecKillGoods(User user,GoodsVO goodsVO);


    /**
     * 获取秒杀结果
     * @param uid 用户ID
     * @param goodsId 商品ID
     * @return 返回结果
     */
    long  getMiaoshaResult(long uid,long goodsId);


    /**
     * 获取秒杀图片的验证码
     * @param user
     * @param goodsId
     * @return
     */
    BufferedImage createVerifyCode(User user,long  goodsId);


    /**
     *
     * @param user 秒杀用户
     * @param goodsId 商品id
     * @param verifyCode 验证码
     * @return 验证是否成功
     */
    boolean checkVerifyCode(User user,long  goodsId,Long   verifyCode);


    /**
     *
     * @param user 秒杀用户
     * @param goodsId 商品id
     * @return 秒杀路径
     */
    String createMiaoshaPath(User user,long goodsId);


    /**
     * 验证路径是否正确
     * @param user 用户
     * @param goodsId 商品id
     * @param path 路径
     * @return 验证成功失败的结果
     */
    boolean checkPath(User user,long  goodsId,String path);


    /**
     * 检查输入的验证码是否正确
     * @param user 秒杀用户
     * @param goodsId 秒杀商品
     * @param verifyCode 验证码
     * @return 验证结果
     */
    boolean checkCodeIsRight(User user,long goodsId,long verifyCode);
}
